home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / var / lib / dpkg / info / udev.postinst < prev    next >
Text File  |  2008-10-24  |  8KB  |  295 lines

  1. #!/bin/sh -e
  2. # This script can be called in the following ways:
  3. #
  4. # After the package was installed:
  5. #    <postinst> configure <old-version>
  6. #
  7. #
  8. # If prerm fails during upgrade or fails on failed upgrade:
  9. #    <old-postinst> abort-upgrade <new-version>
  10. #
  11. # If prerm fails during deconfiguration of a package:
  12. #    <postinst> abort-deconfigure in-favour <new-package> <version>
  13. #               removing <old-package> <version>
  14. #
  15. # If prerm fails during replacement due to conflict:
  16. #    <postinst> abort-remove in-favour <new-package> <version>
  17.  
  18.  
  19. # Remove a no-longer used conffile
  20. rm_conffile()
  21. {
  22.     CONFFILE="$1"
  23.  
  24.     if [ -e "$CONFFILE".dpkg-obsolete ]; then
  25.     echo "Removing obsolete conffile $CONFFILE"
  26.     rm -f "$CONFFILE".dpkg-obsolete
  27.     fi
  28. }
  29.  
  30. # Remove a conffile directory if it's not empty
  31. rm_confdir()
  32. {
  33.     CONFDIR="$1"
  34.  
  35.     if [ -d "$CONFDIR" ]; then
  36.     rmdir "$CONFDIR" 2>/dev/null \
  37.         || echo "Unable to remove $CONFDIR, not empty"
  38.     fi
  39. }
  40.  
  41. # Move a conffile without triggering a dpkg question
  42. mv_conffile() {
  43.     OLDCONFFILE="$1"
  44.     NEWCONFFILE="$2"
  45.  
  46.     if [ -e "$OLDCONFFILE".dpkg-moving ]; then
  47.         echo "Preserving user changes to $NEWCONFFILE"
  48.         mv -f "$NEWCONFFILE" "$NEWCONFFILE".dpkg-new
  49.         mv -f "$OLDCONFFILE".dpkg-moving "$NEWCONFFILE"
  50.     elif [ -e "$OLDCONFFILE".dpkg-bak ]; then
  51.     rm -f "$OLDCONFFILE".dpkg-bak
  52.     fi
  53. }
  54.  
  55.  
  56. # Construct the initial device tree (things udev doesn't provide)
  57. create_devices()
  58. {
  59.     rm -f /lib/udev/devices/fd
  60.     ln -sn /proc/self/fd   /lib/udev/devices/fd
  61.  
  62.     rm -f /lib/udev/devices/stdin
  63.     ln -sn /proc/self/fd/0 /lib/udev/devices/stdin
  64.  
  65.     rm -f /lib/udev/devices/stdout
  66.     ln -sn /proc/self/fd/1 /lib/udev/devices/stdout
  67.  
  68.     rm -f /lib/udev/devices/stderr
  69.     ln -sn /proc/self/fd/2 /lib/udev/devices/stderr
  70.  
  71.     rm -f /lib/udev/devices/core
  72.     ln -sn /proc/kcore     /lib/udev/devices/core
  73.  
  74.     rm -f /lib/udev/devices/sndstat
  75.     ln -sn /proc/asound/oss/sndstat /lib/udev/devices/sndstat
  76.  
  77.     rm -f /lib/udev/devices/MAKEDEV
  78.     ln -sn /sbin/MAKEDEV   /lib/udev/devices/MAKEDEV
  79.  
  80.     rm -f /lib/udev/devices/ppp
  81.     mknod -m 600 /lib/udev/devices/ppp c 108 0
  82.  
  83.     rm -f /lib/udev/devices/loop0
  84.     mknod -m 600 /lib/udev/devices/loop0 b 7 0
  85.  
  86.     rm -f /lib/udev/devices/net/tun
  87.     mknod -m 600 /lib/udev/devices/net/tun c 10 200
  88.  
  89.     rm -f /lib/udev/devices/kmem
  90.     mknod -m 640 /lib/udev/devices/kmem c 1 2
  91.     chgrp kmem /lib/udev/devices/kmem
  92.  
  93.     # Add devices we need to start udevd itself
  94.     rm -f /lib/udev/devices/console
  95.     mknod -m 600 /lib/udev/devices/console c 5 1
  96.  
  97.     rm -f /lib/udev/devices/null
  98.     mknod -m 600 /lib/udev/devices/null c 1 3
  99.  
  100. }
  101.  
  102. # Add groups that we use
  103. add_groups()
  104. {
  105.     for GROUP in scanner nvram; do
  106.     if [ -z "$(getent group $GROUP)" ]; then
  107.         echo "Adding $GROUP group..."
  108.         addgroup --quiet --system $GROUP || true
  109.     fi
  110.     done
  111. }
  112.  
  113. # Write the initial copy of the persistent net and cd rules
  114. seed_persistent_rules()
  115. {
  116.     FILE=/etc/udev/rules.d/70-persistent-net.rules
  117.     if [ ! -e $FILE ]; then
  118.     echo "# This file maintains persistent names for network interfaces." > $FILE
  119.     echo "# See udev(7) for syntax." >> $FILE
  120.     echo "#" >> $FILE
  121.     echo "# Entries are automatically added by the 75-persistent-net-generator.rules" >> $FILE
  122.     echo "# file; however you are also free to add your own entries." >> $FILE
  123.     fi
  124.  
  125.     FILE=/etc/udev/rules.d/70-persistent-cd.rules
  126.     if [ ! -e $FILE ]; then
  127.     echo "# This file maintains persistent names for CD/DVD reader and writer devices." > $FILE
  128.     echo "# See udev(7) for syntax." >> $FILE
  129.     echo "#" >> $FILE
  130.     echo "# Entries are automatically added by the 75-persistent-cd-generator.rules" >> $FILE
  131.     echo "# file; however you are also free to add your own entries provided you" >> $FILE
  132.     echo "# add the ENV{GENERATED}="1" flag to your own rules as well." >> $FILE
  133.     fi
  134. }
  135.  
  136.  
  137. # Rewrite /etc/fstab so that filesystems are mounted by UUID
  138. migrate_fstab_to_uuid()
  139. {
  140.     /usr/lib/udev/migrate-fstab-to-uuid.sh || true
  141. }
  142.  
  143. # Migrate user's /etc/iftab to newer udev rules
  144. migrate_iftab()
  145. {
  146.     if [ -e /etc/fstab ] && [ ! -e /etc/udev/rules.d/70-persistent-net.rules ]
  147.     then
  148.     /usr/lib/udev/migrate-iftab.pl || true
  149.     fi
  150. }
  151.  
  152. # Fix previous errors in /etc/udev/rules.d/70-persistent-net.rules
  153. fix_persistent_net()
  154. {
  155.     if [ -e /etc/udev/rules.d/70-persistent-net.rules ]
  156.     then
  157.     /usr/lib/udev/fix-persistent-net.pl || true
  158.     fi
  159. }
  160.  
  161. # Notify the user that a reboot is required
  162. reboot_required()
  163. {
  164.     if [ -x /usr/share/update-notifier/notify-reboot-required ]; then
  165.     /usr/share/update-notifier/notify-reboot-required
  166.     fi
  167. }
  168.  
  169. # Update the initramfs
  170. update_initramfs()
  171. {
  172.     update-initramfs -u
  173. }
  174.  
  175.  
  176. # Rename the persistent-disk.rules file
  177. mv_persistent_disk_rules()
  178. {
  179.     mv_conffile /etc/udev/rules.d/65-persistent-disk.rules \
  180.             /etc/udev/rules.d/60-persistent-storage.rules
  181. }
  182.  
  183. # Rename the cdrom_id.rules file
  184. mv_cdrom_id_rules()
  185. {
  186.     mv_conffile /etc/udev/rules.d/50-cdrom_id.rules \
  187.             /etc/udev/rules.d/30-cdrom_id.rules
  188. }
  189.  
  190. # Rename upstream rules files
  191. mv_upstream_rules()
  192. {
  193.     mv_conffile /etc/udev/rules.d/00-init.rules \
  194.             /etc/udev/rules.d/05-udev-early.rules
  195.     mv_conffile /etc/udev/rules.d/65-persistent-input.rules \
  196.             /etc/udev/rules.d/60-persistent-input.rules
  197.     mv_conffile /etc/udev/rules.d/65-persistent-storage.rules \
  198.             /etc/udev/rules.d/60-persistent-storage.rules
  199.     mv_conffile /etc/udev/rules.d/65-persistent-storage-tape.rules \
  200.             /etc/udev/rules.d/60-persistent-storage-tape.rules
  201.     mv_conffile /etc/udev/rules.d/65-persistent-storage-edd.rules \
  202.             /etc/udev/rules.d/61-persistent-storage-edd.rules
  203.     mv_conffile /etc/udev/rules.d/99-udevmonitor.rules \
  204.             /etc/udev/rules.d/95-udev-late.rules
  205. }
  206.  
  207. # Remove the iftab.rules file
  208. rm_iftab_rules()
  209. {
  210.     rm_conffile /etc/udev/rules.d/25-iftab.rules
  211. }
  212.  
  213. # Remove early rules files
  214. rm_early_rules()
  215. {
  216.     rm_conffile /etc/udev/rules.d/05-udev-early.rules
  217. }
  218.  
  219. # Remove upstream rules files
  220. rm_upstream_rules()
  221. {
  222.     rm_conffile /etc/udev/rules.d/50-udev-default.rules
  223.     rm_conffile /etc/udev/rules.d/80-drivers.rules
  224. }
  225.  
  226. # Remove the finish init script
  227. rm_finish_init()
  228. {
  229.     rm_conffile /etc/init.d/finish
  230.     update-rc.d -f finish remove
  231. }
  232.  
  233.  
  234.  
  235. case "$1" in
  236.     configure)
  237.     # Upgrade from dapper
  238.     if [ -n "$2" ] && dpkg --compare-versions "$2" lt "093-0ubuntu1"; then
  239.         migrate_fstab_to_uuid
  240.         mv_persistent_disk_rules
  241.     fi
  242.  
  243.     # Upgrade within feisty development cycle
  244.     if dpkg --compare-versions "$2" lt "108-0ubuntu1"; then
  245.         mv_cdrom_id_rules
  246.     fi
  247.  
  248.     # Upgrade from feisty
  249.     if dpkg --compare-versions "$2" lt "113-0ubuntu16"; then
  250.         migrate_iftab
  251.         rm_iftab_rules
  252.  
  253.         # Upgrade from gutsy development version
  254.         rm_finish_init
  255.     fi
  256.  
  257.     # Upgrade from gutsy
  258.     if dpkg --compare-versions "$2" lt "117-6"; then
  259.         fix_persistent_net
  260.         mv_upstream_rules
  261.         rm_early_rules
  262.  
  263.         # Upgrade from hardy development version
  264.         rm_upstream_rules
  265.     fi
  266.  
  267.     # in a vserver environment, mknod will fail; cf. LP: #144685
  268.     grep -q ^VxID /proc/self/status || create_devices
  269.     add_groups
  270.     seed_persistent_rules
  271.     update_initramfs
  272.     ;;
  273.  
  274.     abort-upgrade|abort-deconfigure|abort-remove)
  275.     ;;
  276.  
  277.     *)
  278.     echo "$0 called with unknown argument \`$1'" 1>&2
  279.     exit 1
  280.     ;;
  281. esac
  282.  
  283. # Automatically added by dh_installinit
  284. if [ -x "/etc/init.d/udev" ]; then
  285.     update-rc.d udev start 10 S . >/dev/null || exit $?
  286. fi
  287. # End automatically added section
  288. # Automatically added by dh_installinit
  289. if [ -x "/etc/init.d/udev-finish" ]; then
  290.     update-rc.d udev-finish start 37 S . >/dev/null || exit $?
  291. fi
  292. # End automatically added section
  293.  
  294. exit 0
  295.